import axios from "axios";
import router from "../router";
import ElementUI from "element-ui";
// console.log(ElementUI);

let http = axios.create({
  baseURL: "/api",
  timeout: 1000 * 10,
  withCredentials: true,
});

//拦截器，拦截所有的请求，目的是给每个请求都添加相同的请求头
http.interceptors.request.use((config) => {
  //config就是拦截的每个请求，只要return config就相当于放行
  let token = localStorage.getItem("qf-token");
  // console.log(config);
  //如果请求的地址不是登陆页面，就加上请求头authorization,值是token
  let pathList = ["/users/login", "/users/getCaptcha"];
  // //some用法，遍历数组中的所有元素，看是否有和指定的路径相同的元素，返回布尔值
  // let result=pathList.some(item=>item===config.url)

  //include用法，判断数组中有没有括号中的元素
  let result = pathList.includes(config.url);
  if (!result) {
    config.headers.authorization = token;
  }

  return config;
});

//响应拦截 如果用户登录的时间已过期则会拦截响应的结果，跳转到登录页
http.interceptors.response.use((config) => {
  // console.log(config);
  //如果响应的结果里的code为1004或者10022，则登陆过期，跳转到登录页并弹出提示框
  if (config.data.code === "1004" || config.data.code === "10022") {
    router.push("/login");
    localStorage.removeItem("qf-token");
    ElementUI.Message.error("登录信息已过期");
  }
  //如果没过期就通行，返回用户端请求的数据
  return config;
});

export default http;
